package com.hunan.api.catv.mybatis.generate;

import com.hunan.api.catv.mybatis.generate.enums.CsmbEnum;
import com.hunan.api.catv.mybatis.generate.enums.ModuleEnum;
import lombok.Builder;
import lombok.Getter;


/**
 * 构建一个代码生成器
 *
 * @author : wangchao
 */
@Getter
@Builder
public class MpGeneratorBuilder extends MpGeneratorResolver {

    /**
     * 需要生成的表名
     */
    private String[] tableNames;
    /**
     * 该表名前缀 生成model时不会生成前缀 没有前缀或者需要生成前缀就置空
     */
    private String tableNamePrefix;

    /**
     * 作者信息
     */
    @Builder.Default
    private String author = "wangchao";

    /**
     * 需要自动生成的代码层
     * <p>默认生成"bean", "mapper"</p>
     * <p>controller,service,mapper,bean</p>
     */
    @Builder.Default
    private CsmbEnum[] csmb = {CsmbEnum.bean, CsmbEnum.mapper, CsmbEnum.mapper_xml};

    /**
     * 模块
     */
    private ModuleEnum module;

    /**
     * 【实体】是否使用lombok 默认开启
     */
    @Builder.Default
    private Boolean lombok = true;
    /**
     * 【实体】是否开启AR模式
     */
    @Builder.Default
    private Boolean activeRecord = true;
    /**
     * 生成完成后是否打开窗口 默认关闭
     */
    @Builder.Default
    private Boolean openInExplorer = false;
    /**
     * 【实体】是否为构建者模型（默认 false）
     */
    @Builder.Default
    private Boolean entityBuilderModel = false;
    /**
     * 是否开启Swagger2
     */
    @Builder.Default
    private Boolean swagger2 = false;

    /**
     * 数据库JDBC链接
     */
    private String dataBaseUrl;
    /**
     * 数据库账户
     * 默认：root
     */
    @Builder.Default
    private String dataBaseUserName = "root";
    /**
     * 数据库密码
     */
    private String dataBasePassword;

    /**
     * 是否将mapper.xml放在resources目录下
     */
    @Builder.Default
    private Boolean mapperXmlInResources = true;

    @Override
    public void execute() {
        super.builder = this;
        super.execute();
    }
}
